
#include "iostream"
#include "vector"
#include "unordered_map"
#include "algorithm"
#include "string"
#include "list"


int hex_num(char a){
    if(a>='0'&&a<='9'){
        return a-'0';
    }
    if(a>='a'&&a<='f'){
        return 10+a-'a';
    }
    return 0;
}
char num_hex(int n){
    if(n>=0&&n<=9){
        return '0'+n;
    }
    if(n>=10&&n<=15){
        return 'a'+n-10;
    }
    return '0';
}
int num_of_wei(std::string &s1,int w){
    if(w>=s1.size()){
        return 0;
    }
    return hex_num(s1[s1.size()-w-1]);
}
void set_at_wei(std::string &s,int w,int v){
    while(w>=s.size()){
        s="0"+s;
    }
    s[s.size()-w-1]= num_hex(v);
}
void hex_add_s1_2_s2(std::string& s1,std::string& s2){
    int maxlen= std::max(s1.size(),s2.size());
    int jinwei=0;
    for(int i=0;i<maxlen;i++){
        int n1= num_of_wei(s1,i);
        int n2= num_of_wei(s2,i);
        set_at_wei(s2,i,(n1+n2+jinwei)%16);
        jinwei=(n1+n2+jinwei)/16;
    }
    if(jinwei){
        set_at_wei(s2,s2.size(),jinwei);
    }
}

class Solution{
public:
    void readline(std::string &s){

        int div=s.find(" ");
        auto s1=s.substr(0,div);
        auto s2=s.substr(div+1,s.size()-div-1);
        if(s2[s2.size()-1]==' '){
            s2=s2.substr(0,s2.size()-1);
        }
        hex_add_s1_2_s2(s1,s2);
        std::cout<<s2<<std::endl;
    }
    void run(){
        int a;
        while(std::cin>>a){
            std::cin.get();
            int cnt=1;
            while(a){
                std::string s;
                std::cin.clear();
                std::getline(std::cin,s);

//                if(cnt>1){
//                    printf("\n");
//                }
//                printf("Case %d:\n",cnt);

                cnt++;
                readline(s);
                a--;
            }
        }
    }
};

int main() {
//    bool cur_num= true;
Solution().run();
    return 0;
}

